漏洞发现技术有哪些
漏洞发现技术如下:
源代码分析:顾名思义,这种方法需要源代码,但是不一定要靠人的肉眼来一段一段看代码,有很多自动化的方法。简单来说,就是通过大量对已知的安全漏洞的研究,分析出漏洞产生的原理、模式和常见的代码规律,形成一个知识库,之后再利用这个知识库,对新开发的软件或者系统的源代码进行自动检测,从中发现潜在的未知漏洞。
人工代码分析:这是系统专家或代码高手常用的“挖洞”方法。这些人往往精通某个特定的系统或软件,如Windows、Android、iOS、web建站系统、常用软件等,或者精通某一类编程语言,如VB、C、C++、Java等,能直接通过肉眼找出安全漏洞,有源代码就看源代码,没有源代码就看反编译的代码。不过,这种挖洞方法过于依赖高手的存在,往往具有一定的偶然性,难以“量产”。在企业级应用中有很大的局限性。
恶意程序分析:这是安全分析人员常用的挖洞方法,用来发现别人已经知道并且在用,但是自己还不知道的漏洞。当安全分析人员捕获到某些新型木马病毒样本时,就会将它们放入一个隔离的虚拟环境中运行,以观察这些程序的活动和行为如果某个木马病毒在攻击过程中利用的是一个或者几个新型漏洞,就会在这种分析中显现出来,并被安全分析人员捕获。不过这种方法实际操作起来也不那么容易,毕竟全球每天都有大量新的木马病毒诞生,要从中找出几个特殊的样本,犹如大海捞针。
模糊测试分析:为了保证软件系统的稳定性和健壮性,测试人员往往会使用人工或自动化的方法对软件和系统进行模糊测试或者叫崩溃测试。比如手动在软件界面中随意单击,或向软件输入各种烂七八糟的数据。如果这些行为引起了软件的崩溃,如闪退、显示异常等,就说明软件的编写是有缺陷的。而每一个缺陷的背后都有可能潜藏着一个安全漏洞。
业务流程分析:有些安全漏洞并不是由程序代码引起的,而是由于业务流程的设计本身存在安全风险(设计逻辑的漏洞)。比如,一个实名认证系统要求验证用户的身份证,但无法识别验证者使用的是否是自己的身份证,那么这个认证系统的设计实际上就是有漏洞的,就给了犯罪分子可乘之机。在业务流程中找漏洞,需要了解业务,但不一定需要拥有高超的计算机技术,因此受到各类犯罪团伙的青睐。有时,安全人员对此类漏洞的发现能力还不及黑产团伙。